<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 普通函数
        function say(company, academy, name){
            console.log(`我的公司是${company},专业是${academy},名字是${name}`);
        }

        // 柯里化
        function say1(company){
            return function(academy){
                return function(name){
                    console.log(`我的公司是${company},专业是${academy},名字是${name}`);
                }
            }
        }
        
        // 封装一个公用函数柯里化方法
        // 参数fn：被柯里化的函数
        function curry(fn){
            // 记录fn的参数个数
            let len = fn.length;
            return function temp(){
                // 收集本地传递的参数
                let args = [...arguments];

                if(args.length >= len){
                    return fn(...args);
                }
                else{
                    return function(){
                       return temp(...args, ...arguments);
                    }
                }
            }
        }

        let setInof = curry(say);
        let setInof1 = setInof('蜀国')('武将');
        setInof1("赵云");
        setInof1("关羽");
    </script>
</body>
</html>